﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Mecanica.Dominio.UoW;
using System.Linq.Expressions;

namespace Mecanica.Dominio.Repositorio
{
    public interface IRepositorio<TEntidade> where TEntidade : Entidades.Core.IEntidade
    {
        IUnitOfWork UnitOfWork { get; set; }

        IEnumerable<TEntidade> Todos();

        int Adicionar(TEntidade entidade);

        void Deletar(TEntidade entidade);

        void Atualizar(TEntidade entidade);

        TEntidade BuscarPorId(long id);

        TEntidade CarregarPorId(long id);

        IEnumerable<TEntidade> BuscarPor(Expression<Func<TEntidade, bool>> condicao);
    }
}
